
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

class TestIosStatusBar {
  static TestIosStatusBar? _instance;

  static TestIosStatusBar get instance {
    if (_instance == null) {
      _instance = TestIosStatusBar();
      _instance!._channel.setMethodCallHandler((call) async {
        if (call.method == "noticeTopStatusBar") {
          /// 这里着重说明一下，为什么值响应第一个，
          /// 1、我们add 每次都是吧最新的 addListener 的 callback 放在列表第一个
          /// 2、我们会记录每一个 addListener 的callback，用于返回上级页面时候响应使用
          ///
          /// 因为一般来讲这个点击了 status bar 只有当前页面才会需要响应，
          /// 如果其他的没有pop的页面也响应了，会出现返回页面时候上级页面也响应这个点击行为
          if (_instance!._statusBarTapList.isNotEmpty) {
            _instance!._statusBarTapList.first.call();
          }
          // for (var tap in _instance!._statusBarTapList) {
          //   tap.call();
          // }
        }
        return "ok";
      });
    }

    return _instance!;
  }

  final MethodChannel _channel = const MethodChannel('test_ios_status_bar');

   final List<VoidCallback> _statusBarTapList = [];

   addListener(VoidCallback noticeTap) {
     _statusBarTapList.insert(0,noticeTap);
   }

   removeListener(VoidCallback noticeTap) {
     _statusBarTapList.remove(noticeTap);
   }

   clearListener() {
     _statusBarTapList.clear();
   }

}
